package com.framework.service.common;

import com.framework.common.enums.annex.AnnexGroupEnum;
import com.framework.common.model.response.R;
import com.framework.model.common.vo.AnnexVo;
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
import java.util.List;

/**
 * @author 龘鵺
 * @version 1.0
 * @className com.framework.service.common.AnnexService
 * @description 附件接口类
 * @datetime 2024-07-05 17:01:06
 */
public interface AnnexService {
    /**
     * @param id 1 编号
     * @return com.framework.model.common.vo.AnnexVo
     * @title 根据编号查询附件
     * @description 根据编号查询附件
     * @author 龘鵺
     * @datetime 2024-07-05 17:01:06
     * @version 1.0
     */
    AnnexVo getByIdParam(Long id);

    /**
     * @param row 1 附件类
     * @return com.framework.common.model.response.R
     * @title 新增附件
     * @description 新增附件
     * @author 龘鵺
     * @datetime 2024-07-05 17:01:06
     * @version 1.0
     */
    R<?> save(AnnexVo row);

    /**
     * @param row 1 附件类
     * @return com.framework.common.model.response.R
     * @title 编辑附件
     * @description 编辑附件
     * @author 龘鵺
     * @datetime 2024-07-05 17:01:06
     * @version 1.0
     */
    R<?> edit(AnnexVo row);

    /**
     * @param id 1 编号
     * @return com.framework.common.model.response.R
     * @title 删除附件
     * @description 删除附件
     * @author 龘鵺
     * @datetime 2024-07-05 17:01:06
     * @version 1.0
     */
    R<?> delete(Long id);

    /**
     * @param idList 1 编号集合
     * @return com.framework.common.model.response.R
     * @title 批量删除附件
     * @description 批量删除附件
     * @author 龘鵺
     * @datetime 2024-07-05 17:01:06
     * @version 1.0
     */
    R<?> batchDeleteList(List<Long> idList);

    /**
     * @param row 1 附件类
     * @return java.util.List<com.framework.model.common.vo.AnnexVo>
     * @title 查询附件集合
     * @description 查询附件集合
     * @author 龘鵺
     * @datetime 2024-07-05 17:01:06
     * @version 1.0
     */
    List<AnnexVo> findByList(AnnexVo row);

    /**
     * @param row 1 附件类
     * @return com.framework.common.model.response.R
     * @title 分页查询附件列表
     * @description 分页查询附件列表
     * @author 龘鵺
     * @datetime 2024-07-05 17:01:06
     * @version 1.0
     */
    R<?> findParamPageList(AnnexVo row);

    /**
     * @param delUploads   1 取消关联图片
     * @param systemUserId 2 操作用户
     * @param date         3 操作时间
     * @title 取消关联
     * @description 取消关联
     * @author 龘鵺
     * @datetime 2024-07-09 13:46:44
     */
    void clearAssociation(List<Long> delUploads, Long systemUserId, Date date);

    /**
     * @param annexGroupEnum 1 分组枚举
     * @param file           2 上传对象
     * @param userId         3 用户编号
     * @param date           4 上传时间
     * @return com.framework.common.model.response.R
     * @title 图片上传
     * @description
     * @author 龘鵺
     * @datetime 2024-07-09 20:00:58
     */
    R<?> imageUpload(AnnexGroupEnum annexGroupEnum, MultipartFile file, Long userId, Date date) throws Exception;

    /**
     * @param row 1 上传类
     * @return com.framework.common.model.response.R
     * @title 富文本编辑器上传
     * @description 富文本编辑器上传
     * @author 龘鵺
     * @datetime 2024-08-19 16:04:27
     */
    R<?> wangeditorImageUpload(AnnexVo row) throws Exception;

    /**
     * @return com.framework.common.model.response.R
     * @title 获取附件前缀地址
     * @description 获取附件前缀地址
     * @author 龘鵺
     * @datetime 2024-08-19 16:04:27
     */
    R<?> getAnnexUrl();

    /**
     * @param id 1 编号
     * @return com.framework.common.model.response.R
     * @title 启用|禁用，角色
     * @description 启用|禁用，角色
     * @author 龘鵺
     * @datetime 2024-06-19 09:34:28
     * @version 1.0
     */
    R<?> enable(Long id) throws Exception;
}